package com.demo.java.OD251_300.OD281;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【字母组合】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146079153
 */
public class OdMain {
    private static String no_contain = "";
    private static List<String> res = new ArrayList<String>();
    private static String[][] digits = {
            {"a", "b", "c"},
            {"d", "e", "f"},
            {"g", "h", "i"},
            {"j", "k", "l"},
            {"m", "n", "o"},
            {"p", "q", "r"},
            {"s", "t"},
            {"u", "v"},
            {"w", "x"},
            {"y", "z"}
    };

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String num_str = sc.next();  // 输入数字字符串
        no_contain = sc.next();  // 输入不能包含的字符

        // 递归生成所有的字母组合
        method(0, num_str, no_contain, "");

        // 输出结果，将符合条件的组合以逗号分隔并打印
        System.out.println(String.join(",", res));
    }

    // 递归生成字母组合的方法
    private static void method(int index, String num_str, String no_contain, String temp) {
        // 如果生成的组合长度与输入数字字符串相同
        if (temp.length() == num_str.length()) {
            // 判断生成的组合是否符合条件
            if (is_true(no_contain, temp)) {
                res.add(temp);  // 如果符合条件，加入结果列表
            }
        } else {
            // 获取当前数字对应的字母
            int digits_index = Character.getNumericValue(num_str.charAt(index));
            String[] chars = digits[digits_index];
            for (int i = 0; i < chars.length; i++) {
                // 递归调用方法，继续生成字母组合
                method(index + 1, num_str, no_contain, temp + chars[i]);
            }
        }
    }

    // 判断生成的组合是否符合条件：不包含 no_contain 中的字符
    private static boolean is_true(String no_contain, String s) {
        for (int i = 0; i < no_contain.length(); i++) {
            // 如果组合中不包含 no_contain 中的字符，返回 true
            if (!s.contains(String.valueOf(no_contain.charAt(i)))) {
                return true;
            }
        }

        // 如果包含 no_contain 中的字符，返回 false
        return false;
    }
}